package com.cwnu.sw.cys.core.user.domain.dto;

import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.util.Objects;

/**
 * IpResult 类是一个泛型类，用于封装IP相关的操作结果。
 * 该类实现了Serializable接口，支持序列化。
 *
 * @param <T> 返回对象的类型
 */
@Data
public class IpResult<T> implements Serializable {
    /**
     * 错误码，用于标识操作结果的状态。
     * 通常0表示成功，非0表示失败。
     */
    @ApiModelProperty("错误码")
    private Integer code;

    /**
     * 错误消息，用于描述操作结果的详细信息。
     * 当操作失败时，该字段通常包含错误原因。
     */
    @ApiModelProperty("错误消息")
    private String msg;

    /**
     * 返回对象，包含操作结果的具体数据。
     * 该字段的类型由泛型参数T决定。
     */
    @ApiModelProperty("返回对象")
    private T data;

    /**
     * 判断操作是否成功。
     * 当错误码为0时，表示操作成功。
     *
     * @return 如果操作成功返回true，否则返回false
     */
    public boolean isSuccess() {
        return Objects.nonNull(this.code) && this.code == 0;
    }
}
